#include "sqstack.h"	
void Hanoi1(int n, char a, char b, char c)
{
	if (n == 1)
		printf("\t将第%d个盘片从%c移动到%c\n", n, a, c);
	else
	{
		Hanoi1(n-1,a,c,b);
		printf("\t将第%d个盘片从%c移动到%c\n", n, a, c);
		Hanoi1(n - 1, b, a, c);
	}
}
void Hanoi2(int n, char x, char y, char z)
{
	StackType *st;							
	ElemType e, e1, e2, e3;
	if (n <= 0) return;						
	InitStack(st);							
	e.n = n; e.x = x; e.y = y; e.z = z; e.flag = false;
    Push(st,e); 
	while (!StackEmpty(st))				
	{
        Pop(st,e);		
		if (e.flag == false)
		{
			e1.n = e.n - 1; e1.x = e.y; e1.y = e.x; e1.z = e.z;
			if (e1.n == 1)					
				e1.flag = true;
			else							
				e1.flag = false;
			Push(st, e1);				
			e2.n = e.n; e2.x = e.x; e2.y = e.y; e2.z = e.z; e2.flag = true;  
				Push(st,e2);      
			e3.n = e.n - 1; e3.x = e.x; e3.y = e.z; e3.z = e.y;
			if (e3.n == 1)				
				e3.flag = true;
			else
				e3.flag = false;		
				Push(st,e3);
		}
		else								
			printf("\t将第%d个盘片从%c移动到%c\n", e.n, e.x, e.z);
	}
	DestroyStack(st);				
}
 
